home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / drdobbs / 1987 / 12 / port / menudemo.c < prev    next >
Text File  |  1987-12-21  |  3KB  |  78 lines

  1. /* MENUDEMO.C: Demonstrates principles of menu bars and pop-down   */
  2. /*             menus in Turbo C                                    */
  3. /* --------------------------------------------------------------- */
  4. /* INCLUDES */
  5. #include <dos.h>
  6. #include <video.i>
  7. #include <colors.h>
  8. #include <menubar.i>
  9. #include <popwin.i>
  10.  
  11. /* LOCAL FUNCTION PROTOTYPES */
  12. void popFileMenu (POPDESCR *mfile, char *text);
  13. void popEditMenu (POPDESCR *medit, char *text);
  14.  
  15. /* STATICS FOR PROGRAM */
  16. char entries[] = {"File\0Edit\0Browse\0Reports\0Exit\0"};
  17. MENUBARSPEC menuspec = {{BLUE}, {WHITE}, {5}, {&entries}};
  18. char fileMenu[] = {"Open\nSave\nNew file\nAbandon"};
  19. char editMenu[] = {"Select record\nRemove field\nAdd field"};
  20. /* --------------------------*/
  21. main ()
  22. {
  23. static POPDESCR filePop = {{1}, {2}, {8}, {5}, {0}, {2}};
  24. POPDESCR   editPop;
  25. char       *prevScrn;
  26. int        n, oldx, oldy, cols;
  27.  
  28. /* SET UP POP-DOWN MENU FOR FILE SELECTION */
  29.   filePop.textAttr = chattr (YELLOW, BLUE);
  30.  
  31. /* SET UP POP-DOWN MENU FOR EDIT SELECTION */
  32.   editPop = filePop;
  33.   editPop.left = 80 / menuspec.nsels + 1;
  34.   editPop.right = editPop.left + 12;
  35.   editPop.bottom = editPop.top + 2;
  36.  
  37. /* NOW SHOW THE TWO MENUS IN SUCCESSION */
  38.   setmode (3);
  39.   cls ();
  40.   menubar (&menuspec);                               /* write menu */
  41.   printf ("\nActive page is %d", activepage()); /* show video info */
  42.   printf ("\nVideo mode is %d", videomode (&cols));
  43.   printf ("\nNumber of columns on screen is %d", cols);
  44.   oldx = wherex (activepage());
  45.   oldy = wherey (activepage());
  46.   printf ("\nCursor is at x = %d, y = %d", oldx, oldy);
  47.   gotoxy (oldx, oldy, activepage());
  48.   getch ();                                   /* wait for keypress */
  49.   cursoff ();
  50.   popFileMenu (&filePop, fileMenu);          /* pop down file menu */
  51.   popEditMenu (&editPop, editMenu);
  52.   setcursor (0, cursend());                 /* make a block cursor */
  53.   gotoxy (oldx, oldy, activepage());
  54.   puts ("\nPress any key to end demo...");
  55.   getch ();
  56.   setcursor (cursend()-1, cursend());  /* restore underline cursor */
  57.   cls ();
  58. } /* ------------------------ */
  59. void popFileMenu (POPDESCR *mfile, char *text)
  60. {
  61. char   *prevScrn;
  62.   prevScrn = saveScrn ();
  63.   popMake (mfile);
  64.   popPuts (0, 0, text, mfile);
  65.   getch ();
  66.   restScrn (prevScrn);
  67. } /* ------------------------ */
  68. void popEditMenu (POPDESCR *medit, char *text)
  69. {
  70. char   *prevScrn;
  71.  
  72.   prevScrn = saveScrn ();
  73.   popMake (medit);
  74.   popPuts (0, 0, text, medit);
  75.   getch ();
  76.   restScrn (prevScrn);
  77. } /* ------------------------ */
  78.